import 自动测试
from 插件.基础函数.常用函数 import *
from 工程.九州项目.接收激励.公共函数 import *

    
def 接收状态中频选择性测试初始化():
    # 射频矩阵1.连接()
#    信号源1.连接()
    信号源2.连接()
    频谱仪1.连接()
    产品初始化()

    频谱仪1.设置分析带宽自动()
    频谱仪1.设置视频带宽(2e3)
    频谱仪1.设置参考幅度(5)
    频谱仪1.设置清除保持()
    频谱仪1.设置开触发()
    zbb路由.测试接收状态中频选择性测试()
    zbb产品.被测产品SPI.设置PTT控制指令("PTT无效")

    print("接收状态中频选择性测试初始化")
    
def 接收状态中频选择性测试(工作方式='68k'):
    频率=118e6
    幅度1=3
    幅度2=50
    扫宽1=int(10e6)
    扫宽2 = int(10e6)
    参考幅度1=-14
    参考幅度2 = 5
    通道="主收1"
    if 通道=='主收1':
        if 工作方式=='68k':
            通道选择='数传'
            幅度1=6
            幅度2=60
            扫宽1=int(100e3)
            扫宽2 = int(100e3)
            参考幅度1 = 5
        else:
            通道选择='话音1'
    else:
        通道选择='话音2'

    if 工作方式=='AM':
        zbb产品.被测产品SPI.设置配置参数指令(通道选择=通道选择,话音工作模式='常规',话音常规字段调制方式='AM')
    elif 工作方式=='5.6m':
        zbb产品.被测产品SPI.设置配置参数指令(通道选择=通道选择,话音工作模式='抗干扰',话音抗干扰技术体制='DS方式')
    elif 工作方式=='68k':
        zbb产品.被测产品SPI.设置配置参数指令(通道选择=通道选择,数传工作模式='常规',数传常规字段调制方式='MSK')

    zbb产品.被测产品SPI.设置频率控制指令(通道选择,频率)

    信号源2.设置频率(频率)
    信号源2.设置幅度(-120)
    信号源2.设置调制关()
    信号源2.设置射频开()
    频谱仪1.设置清除保持()
    频谱仪1.设置频率起点(7E7-5e4)
    频谱仪1.设置频率终点(7E7+5e4)
    延时(2)
    频谱仪1.设置寻峰值()

    仪器主峰值=频谱仪1.读幅度()
    主峰值=按值转换(仪器主峰值,0.1,0)

    频谱仪1.设置参考幅度(参考幅度1)
    频谱仪1.设置频率起点(7E7-扫宽1)
    频谱仪1.设置频率终点(7E7+扫宽1)
    信号源2.设置幅度(-120+幅度1)
    频谱仪1.设置清除保持()
    频谱仪1.设置最大保持()
    for i in range(扫宽1*-1,扫宽1,int(扫宽1/100)):#400
        信号源2.设置频率(频率+i)
        延时(0.1)

    数组=频谱仪1.读波形()
    左偏=0
    总数=len(数组)
    中点数=总数//2
    for i in range(中点数):
        中点=数组[301]
        if 数组[i]>中点-6:
            左偏 = i
            break


    右偏 = 0
    for i in range(总数-1,中点数,-1):
        中点 = 数组[301]
        if 数组[i] > 中点 - 6:
            右偏 = i
            break
    带宽6 = 右偏 - 左偏
    print(带宽6,总数,右偏,左偏,中点)

    频谱仪1.设置参考幅度(参考幅度2)
    频谱仪1.设置频率起点(7E7-扫宽2)
    频谱仪1.设置频率终点(7E7+扫宽2)
    信号源2.设置幅度(-120+幅度2)
    频谱仪1.设置清除保持()
    频谱仪1.设置最大保持()
    for i in range(扫宽2*-1,扫宽2,int(扫宽2/50)):
        信号源2.设置频率(频率+i)
        延时(0.1)

    数组 = 频谱仪1.读波形()
    左偏 = 0
    总数 = len(数组)
    中点数 = 总数 // 2
    for i in range(中点数):
        中点 = 数组[301]
        if 数组[i] > 中点 - 6:
            左偏 = i
            break
    右偏 = 0
    for i in range(总数-1, 中点数, -1):
        中点 = 数组[301]
        if 数组[i] > 中点 - 6:
            右偏 = i
            break

    带宽60 = 右偏 - 左偏
    print(带宽60, 总数, 右偏, 左偏, 中点)

    带宽6=带宽6*扫宽1/中点数
    带宽60=带宽60*扫宽2/中点数
    if 工作方式=='68k':
        带宽6/=1e3
        带宽60 /= 1e3
        单位="K"
    else:
        带宽6 /= 1e6
        带宽60 /= 1e6
        单位 = "M"

    print(带宽60,带宽6,主峰值)
    项目="接收状态中频选择性测试('"+工作方式+"')"
    判断合格保存(项目+str(幅度1),带宽6,0,单位=单位)
    判断合格保存(项目+str(幅度2),带宽60,0,单位=单位)
    判断合格保存(项目+"矩形系数",带宽60/带宽6,0,2.5)

if __name__=='__main__':
    pass
    接收状态中频选择性测试初始化()
    接收状态中频选择性测试('68k')
    接收状态中频选择性测试('5.6m')
